﻿using Bricks.Business.Models.Account;
using Bricks.Business.Service;
using Bricks.Business.Service.CommonSupport;
using Bricks.Site.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Bricks.Site.Web.Controllers
{
    [Export]
    public class BaseController : Controller
    {
        #region 属性
        [Import]
        public IMenuInfoService MenuInfoService { get; set; }

        [Import]
        public IUserInfoService UserInfoService { get; set; }

        
        #endregion

        #region Panel和ToolBar信息
        /// <summary>
        /// 取得Panel的信息（从数据库取得菜单名称和按钮）
        /// </summary>
        /// <returns></returns>
        public string GetPanelInfo()
        {
            string result = "title=\"未知功能\" fit=\"true\" iconCls=\"icon-color_wheel\"";  //定义未列入菜单管理的字符串

            string menuCode = Request["MenuCode"] as string;  //从地址栏中截取菜单Code（构造菜单时已经将其作为参数传递）
            if (!String.IsNullOrEmpty(menuCode))
            {
                //Guid menuGuid = Guid.Parse(menuCode);  //转换为Guid
                var menu = MenuInfoService.Menues.FirstOrDefault(m => m.MenuCode == menuCode);  //从数据库查找记录
                if (menu != null)
                {
                    result = "title='" + menu.MenuName + "' fit='true' iconCls='" + menu.Icon + "'";  //定义PanelInfo
                }
            }
            return result;
        }

        /// <summary>
        /// 取得工具栏的信息（定义功能按钮，从数据库取得菜单对应的功能）
        /// </summary>
        /// <returns></returns>
        public string GetToolBarInfo()
        {
            string result = string.Empty;
            string menuCode = Request["MenuCode"] as string;  //从地址栏中截取菜单ID（构造菜单时已经将其作为参数传递）
            if (!String.IsNullOrEmpty(menuCode))
            {
                //Guid menuGuid = Guid.Parse(menuCode);  //转换为Guid
                result = UserInfoService.GetUserMenuActions(SystemData.Instance.CurrentUser, menuCode);
            }
            return result;
        }

        //用于给流程去功能权限，注意流程其实不需要做成功能权限，任何人对流程所有功能按钮都可见，这么做是方便写代码（用JS控制太麻烦）
        public List<UIFunctionView> GetUserMenuActions(string menuCode="")
        {
            List<UIFunctionView> menuActions = new List<UIFunctionView>();
            if (string.IsNullOrEmpty(menuCode))
            {
                menuCode = Request["MenuCode"] as string;  //从地址栏中截取菜单ID（构造菜单时已经将其作为参数传递）
            }
            if (!String.IsNullOrEmpty(menuCode))
            {
                menuActions = UserInfoService.GetUserMenuActionsList(menuCode);
            }
            return menuActions;
        }
        #endregion
    }
}
